package com.ztgf.order.service.pay;

import com.ztgf.order.models.dto.pay.PayOrderLogDTO;
import com.ztgf.pay.models.dto.PayOrderDTO;

import java.math.BigDecimal;

/**
 * @Description:
 * @Author: mxli
 * @Date: 2021-09-16 16:03
 **/
public interface IPayNotifyService {

    /**
     * 订单支付
     * @param orderDTO
     * @param logDTO
     */
    void saveOrder(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 订单佣金支付
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderCommissionMoney(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 年费支付
     * @param orderDTO
     * @param logDTO
     */
    void saveAnnualFee(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 采购申请平台砍价服务费支付
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderPurchaseFeeMoney(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 砍价成功手续费支付
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderPurchaseFeeMoneyScalePrice(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 订单售后退款
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderRefundMoney(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 扣除店铺保证金
     * @param orderDTO
     * @param logDTO
     */
    void saveDeductMargin(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 取消订单退款
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderCancelRefundMoney(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 取消退砍价手续费
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderCancelPurchaseFeeMoneyScalePrice(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 售后订单砍价服务费
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderRefundPurchaseFeeMoneyScalePrice(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);


    /**
     * 充值成功回调
     * @param logDTO
     */
    void saveRechargeSuccess(PayOrderLogDTO logDTO);

    /**
     * 扣除物流保证金
     * @param orderDTO
     * @param logDTO
     */
    void saveLogisticsDeductMargin(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 支付物流账单
     * @param orderDTO
     * @param logDTO
     */
    void saveLogisticsBill(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);

    /**
     * 冻结金额
     * @param shopId
     * @param money
     * @param usage
     */
    void saveFreezeMoney(Long shopId, BigDecimal money, String usage);

    /**
     * 订单佣金退款
     * @param orderDTO
     * @param logDTO
     */
    void saveOrderRefundCommissionMoney(PayOrderDTO orderDTO, PayOrderLogDTO logDTO);
}
